import request from '@/utils/request';

/**
 * 获取数据集列表
 */
export function getDatasetList(query) {
  return request({
    url: '/system/dataset/list',
    method: 'post',
    data: query
  });
}

/**
 * 获取数据集详情
 */
export function getDatasetById(datasetId) {
  return request({
    url: '/system/dataset/info/' + datasetId,
    method: 'get'
  });
}

/**
 * 获取数据源列表（用于选择关联数据源）
 */
export function getDatasourceList() {
  return request({
    url: '/system/datasource/select',
    method: 'get'
  });
}

/**
 * 获取数据集类型列表
 */
export function getDatasetTypeList() {
  return request({
    url: '/system/dataset/getDatasetTypeList',
    method: 'get'
  });
}

/**
 * 创建数据集
 */
export function createDataset(data) {
  return request({
    url: '/system/dataset/add',
    method: 'post',
    data: data
  });
}

/**
 * 更新数据集
 */
export function updateDataset(data) {
  return request({
    url: '/system/dataset/edit',
    method: 'post',
    data: data
  });
}

/**
 * 删除数据集
 */
export function deleteDataset(datasetIds) {
  return request({
    url: '/system/dataset/remove',
    method: 'post',
    params: { ids: Array.isArray(datasetIds) ? datasetIds.join(',') : datasetIds }
  });
}

/**
 * 批量删除数据集
 */
export function deleteDatasets(ids) {
  return request({
    url: '/system/dataset/remove',
    method: 'post',
    data: { ids: ids }
  });
}

/**
 * 导出数据集
 */
export function exportDataset(query) {
  return request({
    url: '/system/dataset/export',
    method: 'post',
    data: query,
    responseType: 'blob'
  });
}

/**
 * 刷新数据集
 */
export function refreshDataset(datasetId) {
  return request({
    url: '/system/dataset/updateMetadata/' + datasetId,
    method: 'post'
  });
}

/**
 * 批量刷新数据集
 */
export function refreshDatasets(ids) {
  return request({
    url: '/system/dataset/refreshBatch',
    method: 'post',
    params: { ids: ids.join(',') }
  });
}

/**
 * 更改数据集状态
 */
export function changeDatasetStatus(datasetId, status) {
  return request({
    url: '/system/dataset/changeStatus',
    method: 'post',
    data: {
      datasetId: datasetId,
      status: status
    }
  });
}

/**
 * 测试数据集连接
 */
export function testDatasetConnection(data) {
  return request({
    url: '/system/dataset/testConnection',
    method: 'post',
    data: data
  });
}

/**
 * 预览数据集数据
 */
export function previewDatasetData(datasetId, params) {
  return request({
    url: '/system/dataset/previewData/' + datasetId,
    method: 'post',
    data: params || {}
  });
}

/**
 * 执行数据集查询
 */
export function executeDatasetQuery(datasetId, params) {
  return request({
    url: '/system/dataset/executeQuery/' + datasetId,
    method: 'post',
    data: params || {}
  });
}

/**
 * 更新数据集元数据（已重命名为refreshDataset，使用统一接口）
 */

/**
 * 获取数据集详情（别名函数，与getDatasetById功能相同）
 */
export const getDatasetMetadata = getDatasetById;

/**
 * 检查数据集编码唯一性
 */
export function checkDatasetCodeUnique(code, id) {
  return request({
    url: '/system/dataset/checkDatasetCodeUnique',
    method: 'post',
    params: {
      datasetCode: code,
      datasetId: id
    }
  });
}

/**
 * 检查数据集名称唯一性
 */
export function checkDatasetNameUnique(name, id) {
  return request({
    url: '/system/dataset/checkDatasetCodeUnique',
    method: 'post',
    data: {
      datasetName: name,
      datasetId: id
    }
  });
}

/**
 * 获取数据集版本历史列表
 */
export function getDatasetVersionList(datasetId) {
  return request({
    url: '/system/dataset/version/list/' + datasetId,
    method: 'post'
  });
}

/**
 * 创建数据集新版本
 */
export function createDatasetVersion(data) {
  return request({
    url: '/system/dataset/version/create',
    method: 'post',
    params: {
      datasetId: data.datasetId,
      changeDescription: data.changeDescription
    }
  });
}

/**
 * 比较数据集版本
 */
export function compareDatasetVersions(params) {
  console.log(params)
  return request({
    url: '/system/dataset/version/compare',
    method: 'post',
    params: {
      versionId1: params.oldVersionId,
      versionId2: params.newVersionId
    }
  });
}

/**
 * 回滚数据集版本
 */
export function rollbackDatasetVersion(params) {
  return request({
    url: '/system/dataset/version/rollback/' + params.versionId,
    method: 'post',
    data: { changeDescription: params.changeDescription }
  });
}

/**
 * 删除数据集版本
 */
export function deleteDatasetVersion(versionIds) {
  return request({
    url: '/system/dataset/version/remove',
    method: 'post',
    params: { ids: Array.isArray(versionIds) ? versionIds.join(',') : versionIds }
  });
}


/**
 * 优化数据集
 */
export function optimizeDataset(datasetId) {
  return request({
    url: '/system/dataset/refreshCount/' + datasetId,
    method: 'post'
  });
}

/**
 * 根据数据源ID查询数据集列表
 */
export function getDatasetsByDatasource(datasourceId) {
  return request({
    url: '/system/dataset/byDatasource/' + datasourceId,
    method: 'post'
  });
}

/**
 * 刷新数据集数据量（别名函数，与optimizeDataset功能相同）
 */
export const getDatasetPerformance = optimizeDataset;
